package io.gitee.sfch.chunmi.entity;

import lombok.Data;

import java.util.List;

/**
 * 分页对象的默认实现
 *
 * @param <T> 分页类型
 */
@Data
public class PaginationImpl<T> implements Pagination<T> {

    /**
     * 分页参数
     */
    private long pageNumber;
    /**
     * 分页大小
     */
    private long pageSize;
    /**
     * 总数量
     */
    private long total;
    /**
     * 数据记录
     */
    private List<T> records;

    /**
     * 创建{@link PaginationImpl}
     *
     * @param records 数据记录
     * @param total 总数量
     * @param pageable 分页参数
     * @param <T> 数据类型
     * @return 分页响应封装 {@link PaginationImpl}
     */
    public static <T> PaginationImpl<T> of(List<T> records, long total, Pageable pageable) {
        PaginationImpl<T> pageResponse = new PaginationImpl<>();
        pageResponse.setPageNumber(pageable.getPageNumber());
        pageResponse.setPageSize(pageable.getPageSize());
        pageResponse.setTotal(total);
        pageResponse.setRecords(records);
        return pageResponse;
    }
}